package com.cy.controller;


import com.cy.bfzcommons.pojo.Product;
import com.cy.bfzcommons.service.ProductService;
import com.cy.bfzcommons.web.util.JsonResult;
import com.cy.bfzcommons.web.util.PageUtil;
import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@RestController
@CrossOrigin
@RequestMapping("/product")
public class ProductController {
    @Autowired
    private ProductService productService;

    /**
     * 新增商品  需要接收商品的详情图片(多张封装与product类中的pictures这个字段)  每传一张图片 就需要调用FileController新增的方法
     * 将磁盘地址返回到页面存进Product类中的mainFigure   还有   pictures详情图片   注意区分  !!
     * @param product
     * @return
     */
    @PostMapping
    public JsonResult saveProduct(@RequestBody @ApiParam(name="product",value="商品pojo类",required=true) Product product){
        productService.saveProduct(product);
        return JsonResult.ok("成功");
    }

    /**
     * 查询所有商品  不返回商品的详情图片
     * @return
     */
    @GetMapping
    public JsonResult getProduct(){
       // List<Product> list = productService.getProduct()


        // return JsonResult.success(list);
        return  JsonResult.ok( PageUtil.startpage().doSelectPageInfo(()->
               productService.getProduct()));
    }

    /**
     * 根据id查询图片商品信息  并且返回商品的全部图片
     * @param id
     * @return
     */
    @GetMapping("/selectById/{id}")
    public JsonResult productById(@PathVariable @ApiParam(name="id",value="商品id",required=true) Integer id){
        Product product = productService.productById(id);
        return JsonResult.ok(product);
    }

    /**
     * 商品模糊查询 根据详情和商品名   不返回商品详情图片
     * @param describe
     * @return
     */
    @GetMapping("/selectLike")
    public JsonResult productLike(@ApiParam(name="describe",value="商品的描述",required=true) String describe){
       // System.out.println(describe);
      //  List<Product> list = productService.productLike(describe);
       // return JsonResult.success(list);
        return  JsonResult.ok( PageUtil.startpage().doSelectPageInfo(()->
                productService.productLike(describe)));
    }

    /**
     * 商品修改  如果单纯修改图片  就调用pictureController的修改方法  然后调用FileController
     * 的删除和新增两个方法  先删再增
     * 此处仅修改商品的主图片 或者状态信息  111
     * @param product
     * @return
     */
    @PutMapping
    public JsonResult updateProduct(@RequestBody @ApiParam(name="product",value="商品pojo对象",required=true) Product product){
        System.out.println(product);

        productService.updateProduct(product);
        return JsonResult.ok();
    }

    /**
     * 没有传参则查询所有的状态为正常的商品数据,传参则进行模糊查询根据商品名和详情查
     * @return
     */
    @GetMapping("selectState")
    public JsonResult selectProduct(String describe){
        System.out.println(describe);
       // List<Product> list = productService.selectProduct(describe);
        return JsonResult.ok( PageUtil.startpage().doSelectPageInfo(()->
                productService.selectProduct(describe)));
    }



}
